package com.lancoo.ccas52.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.lancoo.ccas52.pojo.common.PageInfo;
import com.lancoo.ccas52.pojo.vo.ClassTeachingClassDto;
import com.lancoo.ccas52.pojo.vo.TeacherStatistics;
import com.lancoo.ccas52.pojo.vo.TeachingClassCourseDto;
import com.lancoo.ccas52.pojo.vo.TeachingClassScheduleDto;

import javax.servlet.ServletOutputStream;
import java.util.List;

public interface TimetableService {


    /**
     * 获取全校课表
     * @param page
     * @param taskId
     * @param courseTypeId
     * @param studyNature
     * @param courseNature
     * @param collegeId
     * @param keyWord
     * @return
     */
    PageInfo<TeachingClassCourseDto> getSchoolSchedule(IPage page, Integer taskId, String courseTypeId, Integer studyNature, Integer courseNature,Integer majorProp, String collegeId, String keyWord);

    /**
     * 统计教师教学信息
     * @param taskId
     * @param currentPage
     * @param pageSize
     * @param collegeId
     * @param keyWord
     * @return
     */
    PageInfo<TeacherStatistics> getTeacherStatistics(Integer taskId,String schoolId,String term, Integer currentPage, Integer pageSize, String collegeId, String keyWord);
    /**
     * 导出全校课表
     * @param taskId
     * @param courseTypeId
     * @param courseType
     * @param studyNature
     * @param courseNature
     * @param collegeId
     * @param collegeName
     * @return
     */
    String schoolScheduleToExcel (Integer taskId,String courseTypeId,String courseType, Integer studyNature, Integer courseNature, String collegeId,String collegeName);

    /**
     * 获取学校环节课表
     * @param taskId
     * @param courseTypeId
     * @param courseType
     * @param studyNature
     * @param collegeId
     * @param collegeName
     * @return
     */
    String schoolSegmentScheduleToExcel(Integer taskId, String courseTypeId, String courseType, Integer studyNature, String collegeId, String collegeName);

    /**
     * 获取教师课表
     * @param taskId
     * @param teacherId
     * @return
     */
    List<TeachingClassScheduleDto> getTeacherSchedule(Integer taskId, Long teacherId);

    /**
     * 获取教室课表
     * @param taskId
     * @param roomId
     * @return
     */
    List<TeachingClassCourseDto> getRoomSchedule(Integer taskId, Long roomId);

    /**
     * 获取行政班
     * @param taskId
     * @param currentPage
     * @param pageSize
     * @param collegeId
     * @param keyWord
     * @return
     */
    PageInfo<ClassTeachingClassDto> getClassList(Integer taskId, Integer currentPage, Integer pageSize, String collegeId, String keyWord);

    /**
     * 获取学生课表
     * @param taskId
     * @param studentId
     * @return
     */
    List<TeachingClassCourseDto> getStudentSchedule(Integer taskId, Long studentId);
    /**
     * 导出教师课表
     * @param taskId
     * @param teacherId
     * @return
     */
    String teacherScheduleToExcel(Integer taskId, Long teacherId);

    /**
     * 导出教室课表
     * @param taskId
     * @param roomId
     * @return
     */
    String roomScheduleToExcel(Integer taskId, Long roomId);

    /**
     * 导出学生课表
     * @param taskId
     * @param studentId
     * @return
     */
    String studentScheduleToExcel(Integer taskId, Long studentId);

    /**
     * 课表同步到基础平台 数据处理
     * @param taskId
     * @return
     */
    String allScheduleToExcel(Integer taskId, Integer teachingClassType);

    /**
     * 导出全部行政班课表
     * @param taskId
     * @param out
     */
    void classScheduleToExcel(Integer taskId, ServletOutputStream out,String classId);

    /**
     * 导出总表
     *
     * @param taskId
     * @param out
     * @param scheduleType 1:行政班 2:教师 3:教室
     */
    void summaryScheduleToExcel(Integer taskId, ServletOutputStream out, Integer scheduleType);


}
